#ifndef _TRANS_FILE_H_
#define _TRANS_FILE_H_
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <mysql/mysql.h>
#include "../tlv/tlv.h"
#include "sessionManager/sessionManager.h"
#include "trans_handle_tables_act/trans_handle_tables_act.h"

//定义用于数据传输的枚举命令码
typedef enum trans_command_s{

    DATA_CHUNK = 51,// 表述数据块
    DATA_END = 52,//表示数据传输结束
    THE_MD5_VALUE = 53,//puts文件时，发送文件的md5值
    GETS_FILE_EXIST = 54,//表示下载文件存在
    GETS_FILE_NOEXIST = 55,//表示下载文件不存在
    PUTS_FILE_EXIST = 56,//表示上传文件已存在(妙传功能)
    PUTS_FILE_NOEXIST = 57//表示上传文件已存在(妙传功能)
                         
}trans_command_t;

//客户端向服务端上传文件
int put_file_to_serv(tlv_msg_t cmd_msg,user_session_t *session);
//上传文件，秒传
int putsfile_no_wait(int netfd);
//上传文件，直传
int putfile_real_trans(int netfd, char *md5_value_of_putsfile);
//上传完文件后进行反馈
int puts_file_finish_feedback(int netfd);

//客户端从服务端下载
int get_file_from_serv(tlv_msg_t cmd_msg,user_session_t *session);
int getsfile_big(int netfd, int fd, off_t file_length,off_t current_file_length);
int getsfiel_small(int netfd, int fd, off_t file_length,off_t current_file_length);
int remove_file_func(tlv_msg_t cmd_msg,user_session_t *session);
#endif
